1. はじめに
日々の問い合わせ対応に追われていませんか?
・「また同じ質問がきた…」
・「FAQを作ったのに読んでもらえない…」
そんな悩みは、多くのサービスで共通の“あるある”なワケです。
とはいえ、問い合わせ対応を丸ごとAIに任せるのは難しそう……
そう思っている人も少なくありません。
そこで今回は、Amazon BedrockとAWS Lambdaを組み合わせることで、
FAQ回答をほぼ自動化できる“爆速AIサポート”をどう作れるかを紹介します。
2. 今回使用するAWSサービス
-
AWS Lambda
サーバーを用意せずにPythonやJavaのコードを実行できる、完全マネージドなサーバーレス実行環境です。
今回は、Amazon Bedrockに対して質問を送信し、返ってきた回答をJSON形式でレスポンスするために使用します。 -
Amazon Bedrock
今回の目玉となる、サーバー管理不要で複数の生成AIモデル(Nova、Claude、Llamaなど)をAPI経由で利用できる、生成AIプラットフォームです。 -
Amazon S3
インターネット上で大容量のデータを安全に保存・管理できるスケーラブルなクラウドストレージサービスです。
今回は、FAQのお問い合わせ内容とそれに対応する回答をCSV形式で用意し、S3に保存します。
S3に保存したCSVはナレッジベースに同期され、検索拡張生成(RAG)で利用されます。 -
AWS Identity and Access Management (IAM)
ユーザーやサービスの権限を管理して、AWS リソースへのアクセスを制御するサービスです。
今回は、Amazon BedrockやAWS Lambdaのサービスロール設定で使用します。
3. システム構成
今回は、以下の構成でシステムを構築し、AWS LambdaからAmazon Bedrockに対して質問を送信し、正確な回答が返却されることを確認します。
WEBサービスと統合する場合は、API Gatewayなどと連携することで、シームレスなサービス統合が可能です。

4. 構築手順
S3バケットの作成
FAQのお問い合わせ内容とそれに対応する回答をCSV形式で用意し、S3バケット内に格納します。
今回は以下のサンプルCSVを利用します。
question,answer
"返品したい場合はどうすれば良いですか?","商品到着後30日以内であれば返品が可能です。注文番号と併せてカスタマーサポートへご連絡ください。"
"営業時間を教えてください。","店舗の営業時間は毎日10:00〜18:00です。オンラインサポートは24時間受け付けています。"
"送料はいくらですか?","ご注文金額が5,000円以上の場合は送料無料です。5,000円未満の場合は全国一律500円です。"
"支払い方法には何がありますか?","クレジットカード、銀行振込、PayPay、コンビニ払いに対応しています。"
"注文後に配送先を変更できますか?","発送前であれば変更可能です。注文履歴ページから配送先の変更を行うか、サポートにご連絡ください。"
"ギフト包装はできますか?","はい、追加料金300円でギフト包装が可能です。注文時にオプションを選択してください。"
"商品の到着にはどれくらいかかりますか?","通常、注文から2〜3営業日で発送されます。地域によっては到着まで4〜5日かかる場合があります。"
テスト用のバケットを作成し、上記CSVをアップロードします。

バケット名は任意の名前で設定します。

その他の設定はデフォルトで大丈夫です。
次に、作成したバケットをクリックし、CSVをアップロードします。


以上でS3の設定は完了です。
Amazon Bedrock ナレッジベースの作成
S3に保存したCSVとナレッジベースを同期し、検索拡張生成(RAG)が利用できるようにします。
マネジメントコンソールのAmazon Bedrockページのメニューから「ナレッジベース」をクリックします。

ランタイムロールは「新しいサービスロールを作成して使用」を、データソースには「Amazon S3」を選択します。

次に、「データソース名」を任意の名前で設定し、「S3のURI」には先ほどS3に格納したCSVのURIを設定します。
「S3を参照」をクリックすると格納したCSVが表示され、設定できると思います。

その他の設定はデフォルトで大丈夫です。
次に、埋め込みモデルとして「Titan Embeddings G1 - Text」を選択します。
埋め込みモデルとは単語、文章、画像、音声などの人間が理解できる情報を、AIが処理しやすい数字のリスト(ベクトル)」に変換するAIモデルです。

次に、ベクトルストアで「Amazon OpenSearch Serverless」を選択し、次へをクリックします。
ベクトルストアとはデータを数字のリスト(べクトル)として保存する「特殊なデータベース」です。
RAGのデータソースもベクトルストアで管理されており、情報を取り出すための「引き出し箱」として使われるイメージです。

「ナレッジベースを作成」をクリックします。
※作成完了まで、数分かかると思います。

次に、作成したナレッジベースをクリックし、データソースにチェックをいれ、「同期」をクリックします。
データソースであるS3のCSVデータがベクトルに変換されます。

ここで一旦テストを実施してみます。
ページ右上の「ナレッジベースをテスト」をクリックします。
「ナレッジベース ID」は後ほど使用しますので、控えておいてください。

「取得と応答生成:データソースとモデル」を選択し、「モデルを選択」をクリックします。

今回は「Nova Micro」というモデルを使用してみます。

モデルを適用後、ページ右側のプロンプトに質問を入力し、エンターをクリックすると「Nova Micro」が生成した答えが返ってきます。
あとは、これをAWS LambdaからAPIで呼び出せばよさそうですね。

AWS Lambda関数の作成
Amazon Bedrockに質問を送信し、回答を受信するLambda関数を作成します。
「関数名」は任意の名前を設定します。
また、今回はランタイムとして「Python3.14」を使用します。

実行ロールは新しく作成します。
作成したロールには、後ほどIAMからAmazon Bedrockへのフルアクセス権限ポリシーを追加します。
※本番環境などでは、権限を必要最小限に絞って設定してください。

作成した関数をクリックし、「コード」タブを開き、以下のコードをコピペします。
「knowledgeBaseId」には控えたナレッジベースIDを入力してください。
「modelArn」にはモデル(Nova Micro)のARN(Amazon Resource Name)を入力してください。
import json
import boto3
bedrock_client = boto3.client(
service_name='bedrock-agent-runtime',
region_name='ap-northeast-1'
)
def lambda_handler(event, context):
question = event.get('question')
response = bedrock_client.retrieve_and_generate(
input={"text": question},
retrieveAndGenerateConfiguration={
"type": 'KNOWLEDGE_BASE',
"knowledgeBaseConfiguration": {
"knowledgeBaseId": "控えたナレッジベースID",
"modelArn": "arn:aws:bedrock:ap-northeast-1:ご自身のアカウントID:inference-profile/apac.amazon.nova-micro-v1:0",
},
},
)
text = response["output"]["text"]
return {
"statusCode": 200,
"body": json.dumps({
"result": response["output"]["text"]
}, ensure_ascii=False)
}
IAMロールの設定
自動作成された、AWS Lambdaの実行ロールにAmazon Bedrockのフルアクセス権限を追加します。
AWS Lambda関数の「設定」タブで実行ロールのロール名をクリックします。

検索欄で「BedrockFullAccess」と検索し、表示されたポリシーを選択後、「許可を追加」をクリックします。

これでIAMロールの設定は完了です。
5. 動作確認
AWS Lambda関数からテストを実施し、適切な回答がJSONで表示されることを確認します。
AWS Lambdaのコンソール画面で「テスト」タブを開き、新しいイベントアクションを作成します。
「イベント名」は任意の名前を設定します。

次に、イベントJSONを以下のように設定します。
「question」の中身はご自由に決めてください。
{
"question": "支払方法は?"
}
画面右上の「テスト」をクリックし、質問に対する回答が返ってくれば成功です。


6. 最後に
今回は Amazon Bedrock × Lambda を活用して、爆速AIサポートを作ってみました。
近年ではあらゆるサービスがWebを通じて利用できるようになり、便利さが格段に向上しています。
その一方で、お問い合わせ対応はまだ多くの企業や個人にとって大きな課題です。
AIを活用することで、対応のスピードや品質を格段に向上させることができ、日々の業務負荷も軽減できます。
今回の記事が、AI導入のヒントやアイデアの一助になれば嬉しいです。
最後までお読みいただき、ありがとうございました!





